package com.ljy.my_study.java8.函数式接口返回实例;

import java.util.Iterator;
import java.util.ServiceLoader;

/** 
* @author James
* @date 2018年11月28日 
*/
public class SpiLoader {
	public static <T> T load(Class<T> clazz) {
		ServiceLoader<T> loader=ServiceLoader.load(clazz);
		T t=getObject(loader);
		if(t==null) {
			loader=ServiceLoader.load(clazz, SpiLoader.class.getClassLoader());
			t=getObject(loader);
		}
		return t;
	}
	
	private static <T> T getObject(ServiceLoader<T> loader) {
		Iterator<T> it=loader.iterator();
		T t=null;
		while(it.hasNext()) {
			t=it.next();
		}
		return t;
	}
}
